Kubernetes 集群 是一組運行容器化應(yīng)用程序的節(jié)點。容器化應(yīng)用程序?qū)?yīng)用程序與其依賴項和一些必要的服務(wù)打包在一起。它們比虛擬機更輕巧、更靈活。通過這種方式,Kubernetes 集群允許更輕松地開發(fā)、移動和管理應(yīng)用程序。Kubernetes 集群允許容器跨多臺機器和環(huán)境運行:虛擬機、物理機、基于云的和本地。與虛擬機不同,Kubernetes 容器不限于特定的操作系統(tǒng)。相反,它們能夠共享操作系統(tǒng)并在任何地方運行。
Kubernetes 集群由一個主節(jié)點和多個工作節(jié)點組成。這些節(jié)點可以是物理計算機或虛擬機,具體取決于集群。主節(jié)點控制集群的狀態(tài);例如,哪些應(yīng)用程序正在運行以及它們對應(yīng)的容器映像。主節(jié)點是所有任務(wù)分配的來源。它協(xié)調(diào)流程,例如:
- 調(diào)度 和擴展應(yīng)用程序
- 維護 集群的狀態(tài)
- 實施 更新
工作節(jié)點 是運行這些應(yīng)用程序的組件。 工作節(jié)點執(zhí)行主節(jié)點分配的任務(wù)。它們可以是 虛擬機 或物理計算機,都作為一個系統(tǒng)的一部分運行。Kubernetes 集群必須至少有一個主節(jié)點和一個工作節(jié)點才能運行。對于生產(chǎn)和登臺,集群分布在多個工作節(jié)點上。對于測試,組件可以全部運行在同一個物理或虛擬節(jié)點上。
命名空間 是 Kubernetes 用戶在一個物理集群中組織許多不同集群的一種方式。 命名空間使用戶能夠通過資源配額在不同團隊之間劃分物理集群內(nèi)的集群資源。因此,它們非常適合涉及復(fù)雜項目或多個團隊的情況。
Kubernetes 集群由什么組成?
一個 Kubernetes 集群包含六個主要組件:
- API 服務(wù)器: 向所有 Kubernetes 資源公開一個 REST 接口。作為 Kubernetes 控制平面的前端。
- 調(diào)度器:根據(jù)資源需求和指標放置容器。記下沒有分配節(jié)點的 Pod,并選擇要在其上運行的節(jié)點。
- 控制器管理器:運行控制器進程并將集群的實際狀態(tài)與其所需的規(guī)范相協(xié)調(diào)。管理控制器,例如節(jié)點控制器、端點控制器和復(fù)制控制器。
- Kubelet:通過與 Docker 引擎(用于創(chuàng)建和管理容器的默認程序)交互,確保容器在 Pod 中運行。獲取一組提供的 PodSpec 并確保其對應(yīng)的容器完全可操作。
- Kube-proxy:管理網(wǎng)絡(luò)連接并維護跨節(jié)點的網(wǎng)絡(luò)規(guī)則。在給定集群中的每個節(jié)點上實現(xiàn) Kubernetes 服務(wù)概念。
- etcd:存儲所有集群數(shù)據(jù)。一致且高度可用的 Kubernetes 后備存儲。
這六個組件都可以在 Linux 上運行或作為 Docker 容器運行。主節(jié)點運行 API 服務(wù)器、調(diào)度程序和控制器管理器,工作節(jié)點運行 kubelet 和 kube-proxy。
您如何使用 Kubernetes 集群?
要使用 Kubernetes 集群,您必須首先確定其所需狀態(tài)。Kubernetes 集群的期望狀態(tài)定義了許多操作元素,包括:
- 應(yīng)該運行的應(yīng)用程序和工作負載
- 這些應(yīng)用程序需要使用的圖像
- 應(yīng)為這些應(yīng)用程序提供的資源
- 所需副本數(shù)量
為了定義所需的狀態(tài),JSON 或 YAML 文件(稱為清單)用于指定應(yīng)用程序類型和運行系統(tǒng)所需的副本數(shù)量。開發(fā)人員使用 Kubernetes API 來定義集群的期望狀態(tài)。這種開發(fā)人員交互使用命令行界面 (kubectl) 或利用 API 直接與集群交互以手動設(shè)置所需的狀態(tài)。然后,主節(jié)點將通過 API 將所需狀態(tài)傳達給工作節(jié)點。
Kubernetes 通過 Kubernetes 控制平面自動管理集群以使其與所需狀態(tài)保持一致。Kubernetes 控制平面的職責包括調(diào)度集群活動以及注冊和響應(yīng)集群事件。
Kubernetes 控制平面運行連續(xù)的控制循環(huán),以確保集群的實際狀態(tài)與其期望的狀態(tài)相匹配。例如,如果您部署一個應(yīng)用程序以使用五個副本運行,但其中一個崩潰了,Kubernetes 控制平面將注冊此崩潰并部署一個額外的副本,以便保持五個副本的期望狀態(tài)。
自動化通過 Pod 生命周期事件生成器或 PLEG 進行。這些自動任務(wù)可以包括:
- 啟動 和重啟容器
- 調(diào)整 應(yīng)用程序的副本數(shù)
- 驗證 容器鏡像
- 啟動 和管理容器
- 實施 更新和回滾
如何創(chuàng)建 Kubernetes 集群?
您可以在物理機或虛擬機上創(chuàng)建和部署 Kubernetes 集群。建議新用戶使用 Minikube 開始創(chuàng)建 Kubernetes 集群。Minikube 是一個開源工具,兼容 Linux、Mac 和 Windows 操作系統(tǒng)。Minikube 可用于創(chuàng)建和部署僅包含一個工作節(jié)點的簡單、流線型集群。
此外,您可以使用 Kubernetes 模式來自動管理集群規(guī)模。Kubernetes 模式有助于將基于云的架構(gòu)重用于基于容器的應(yīng)用程序。雖然 Kubernetes 確實提供了許多有用的 API,但它沒有提供如何將這些工具成功整合到操作系統(tǒng)中的指南。Kubernetes 模式提供了一種一致的方式來訪問和重用現(xiàn)有的 Kubernetes 架構(gòu)。您可以利用可重用的 Kubernetes 集群藍圖網(wǎng)絡(luò),而不是自己創(chuàng)建這些結(jié)構(gòu)。